package cn.wolfcode.cloud.shop.util;

import cn.wolfcode.cloud.shop.common.CommonExceptionAdvice;
import cn.wolfcode.cloud.shop.common.Result;
import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.text.MessageFormat;

/**
 * @Description: 会员登入统一处理
 * @Author: 伍家钰
 * @Date: 2020/9/6 17:26
 * @Version: 1.0
 */
@ControllerAdvice
public class MemberExceptionAdvice extends CommonExceptionAdvice {
    // 处理JSR303异常
    @ExceptionHandler(BindException.class)
    @ResponseBody
    public Result hanlderBindException(BindException e) {
        e.printStackTrace();
        // 拿到捕获到的所有异常,取第1个异常获取其默认的异常信息:手机格式不正确
        String defaultMessage = e.getAllErrors().get(0).getDefaultMessage();
        MemberCodeMsg memberCodeMsg = MemberCodeMsg.PARAM_ERROR.format(defaultMessage);
        return Result.error(memberCodeMsg);


        //===================== 有个奇葩的bugger =======================
        // 拿到捕获到的所有异常,取第1个异常获取其默认的异常信息:手机格式不正确
        //String defaultMessage = e.getAllErrors().get(0).getDefaultMessage();
        // 获取到MemberCodeMsg中的异常信息
        //MemberCodeMsg memberCodeMsg = MemberCodeMsg.PARAM_ERROR;
        // 替换memberCodeMsg中的异常信息
       // memberCodeMsg.setMsg(MessageFormat.format(memberCodeMsg.getMsg(), defaultMessage));
        //return Result.error(memberCodeMsg);
        //=============================================================
    }
}